package com.zzh.partnersys.common.exception;

import lombok.Data;

/**
 * @author zzh
 * @version 1.0
 */
@Data
public class ResultUtils<T> {

    //状态码
    private Integer code;

    //信息
    private String message;

    //数据
    private T data;

    //构造私有化构造器
    //让我们外部的人不能去new对象
    //要通过下面的一些方法才可以去获�?
    private ResultUtils(){}

    //这个就是通用的设置数据的方法
    //设置数据的方�?返回类型为Result<T>
    //参数data传入的数据，resultCodeEnum是传入的code状态码和信息message的封装枚举类
    public static<T> ResultUtils<T> build(T data, ResultCodeEnum resultCodeEnum){
        //创建Result对象，设置值并且返回对�?
        ResultUtils<T> result = new ResultUtils<>();
        //1.判断返回结果是否需要数�?
        if(data != null){
            result.setData(data);
        }
        //设置其他�?
        result.setCode(resultCodeEnum.getCode());
        result.setMessage(resultCodeEnum.getMessage());
        //返回设置值之后的对象
        return result;
    }

    //为了方便我们设置成功和失败两种的方法

    //成功�?
    public static<T> ResultUtils<T> ok(T data){
        ResultUtils<T> result = build(data, ResultCodeEnum.SUCCESS);
        return result;
    }

    //失败的方�?
    public static<T> ResultUtils<T> fail(T data){
        ResultUtils<T> result = build(data,ResultCodeEnum.FAIL);
        return result;
    }
}
